Home
OpenAjax Conformance
1 Introducing OpenAjax Conformance
The term OpenAjax Conformance is shorthand for the set
of conformance requirements that OpenAjax Alliance will place
on Ajax technologies, products, and applications. The specifications
that define OpenAjax Conformance are under development
and are not yet completed or approved.
These requirements
will focus on a small number of simple but important aspects of Ajax usage,
thereby providing the critical bits of Ajax interoperability
that customers need, but in a manner that allows Ajax suppliers
to continue to innovate and move forward with new technologies and products.
OpenAjax Conformance will provide the following benefits to IT managers and the Ajax developer community:
- Seamless integration of multiple Ajax products and technologies within the same Web application,
particularly with applications that use mashup techniques
- Greater certainty about product choices, where OpenAjax Conformance plays
a similar role in the Ajax community as the Good Housekeeping Seal does with consumer products
- Lower training costs, lower development costs, and faster delivery of
Web 2.0 innovations due to industry adoption of common approaches that build from OpenAjax standards
- Interchangeability of OpenAjax Conformant products, such that
customers can choose among multiple vendors (and change vendors in the future)
2 The pillars of OpenAjax Conformance
As currently envisioned, an Ajax runtime library will be able to claim OpenAjax Conformance only if it:
- Supports the OpenAjax Hub and all of the
Conformance Requirements defined within the
OpenAjax Hub Specification
- Registers its JavaScript global objects with
the OpenAjax Registry maintained by OpenAjax Alliance
- Supports all relevant Conformance Requirements defined within
the OpenAjax Alliance's collection of OpenAjax Best Practices specifications, as they are developed over the course of time
3 Support for the OpenAjax Hub and its various conformance requirements
The OpenAjax Hub is a set of standard JavaScript functionality defined by the OpenAjax Alliance,
with strong focus on being small and fast, that addresses key interoperability issues
that arise when multiple Ajax libraries are used within the same web page.
The OpenAjax Alliance is far along on both the
OpenAjax Hub Specification
and an open source reference implementation (http://openajaxallianc.sourceforge.net).
Version 1.0 of the OpenAjax Hub includes the following two key features for Ajax interoperability:
- Ajax library loading and unloading control -
The Hub provides APIs for registering libraries, unregistering libraries,
and querying about previously registered libraries.
- Publish/Subscribe Event Hub -
The Hub provides an event hub using a publish/subscribe approach
that allows libraries to publish and subscribe to events in a reliable manner
in order to coordinate actions across components from different Ajax libraries.
The Publish/Subscribe Event Hub allows one part of a mashup to broadcast an event
to which other application components subscribe.
For example, suppose there is a calendar widget that allows the user to pick a particular date.
The mashup might have multiple UI components that
need to update their visual appearance whenever a new calendar date is chosen.
In this case, the calendar widget would publish a "new calendar date" event
to which the other visualization widgets would subscribe.
Therefore, the pub/sub manager's generic messaging benefits is a
key integration mechanism between components built from different Ajax toolkits.
Within the OpenAjax Hub Specification are a series of Conformance Requirements
which Ajax products must support in order to claim OpenAjax Conformance.
4 Registration with the OpenAjax Registry
One of the challenges with Ajax programming, particularly when
mixing and matching different Ajax technologies within the same Web application,
are JavaScript object collisions where different Ajax libraries
and the application developer attempt to use the same names for global objects.
The OpenAjax Registry provides a centralized, industry-wide global
object registration authority that provides the following benefits to the Ajax community:
- Ajax product vendors with existing libraries that successfully
their Ajax runtime libraries and list of global objects
with the OpenAjax Registry gain confidence
that other Ajax libraries will not replace or modify their global objects
and thereby compromise the reliability or performance of their products
- Ajax library developers who are developing new libraries can look at
the OpenAjax Registry to see which global object names have been allocated
to other libraries and choose names for global objects that will not collide with existing products
- Ajax application developers (i.e., developers who use Ajax toolkits to build and deliver Ajax applications)
can also look at the OpenAjax Registry to see which global object names
have been allocated to which libraries and make sure that the global objects
used by his application do not collide with the global objects used
by any of the libraries that will be included within his application
- The OpenAjax Registry also will tend to drive
Ajax technology providers to adopt good practices in their use of
JavaScript global objects because OpenAjax Alliance generally
will only approve global object registration requests that conform to OpenAjax Best Practices.
5 Support for all relevant Conformance Requirements defined within the OpenAjax Best Practices specifications
OpenAjax Alliance intends to define a collection of OpenAjax Best Practices
that are designed to promote and accelerate customer success using Ajax technologies.
As currently envisioned, the Best Practices specifications will contain two types of best practice items:
- Conformance Requirement, where the given item represents a requirement on Ajax software.
If a given Conformance Requirement is relevant to a given Ajax software product or technology,
then that Ajax software must support the given Conformance Requirement
in order to claim OpenAjax Conformance. It is expected that few of the Best Practices
will be Conformance Requirements, and instead the majority will be Suggested Best Practices.
- Suggested Best Practice, where the given item defines what OpenAjax Alliance believes
is recommended behavior in the majority of circumstances.
These items represent general recommendations to the industry, but Ajax software
is not required to support any of the Suggested Best Practices in order to claim OpenAjax Conformance.
It is expected that there will be different Best Practices for different aspects of Ajax application development:
- Best Practices Applications - Best practices for Ajax applications (i.e.,
the software developed by the Ajax application developer,
who is likely to build his application using an Ajax toolkit)
- Best Practices Browsers - Best practices for Web browsers so that they support Ajax and OpenAjax in an optimal manner
- Best Practices IDEs - Best practices for IDEs that support Ajax developments
- Best Practices Libraries - Best practices for Ajax JavaScript runtime libraries
- Best Practices Servers - Best practices for server frameworks that produce Ajax-powered user interfaces
6 Different versions over the course of time
The meaning of OpenAjax Conformance is likely to evolve over time as OpenAjax Alliance
addresses new Ajax standards issues on behalf of the Ajax community.
Current thinking is that the first official approved version
of OpenAjax Conformance will be labeled "OpenAjax 1.0 Conformance".
Subsequently, there will be periodic updates, each with their own version number (e.g., version 1.1 or 2.0).
7 Multiple conformance levels
There is a possibility in the future that the term OpenAjax Conformance
might provide multiple OpenAjax Conformance levels, particularly as OpenAjax Alliance defines its OpenAjax Best Practices.
8 Conformance claims
When an Ajax technology provider claims OpenAjax Conformance,
it must identify which version of OpenAjax Conformance with which it is compatible.
For example, the documentation might say: "This product is OpenAjax 1.0 Conformant".
As currently envisioned, the following represent acceptable ways of expressing OpenAjax Conformance within conformance claims:
- OpenAjax n.m Conformance
- OpenAjax n.m Conformant